package com.ww.learn.coroutine.context

import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

fun main() = runBlocking<Unit> {
    // 非受限的调度器是一种高级机制，可以在某些极端情况下提供帮助而不需要调度协程以便稍后执行或产生不希望的副作用
    // 因为某些操作必须立即在协程中执行，非受限调度器不应在通常的代码中使用
    launch(Dispatchers.Unconfined) { // 非受限的将和主线程一起工作
        println("Unconfined: ${Thread.currentThread().name}")
        delay(500)
        println("Unconfined: ${Thread.currentThread().name}")
    }
    launch { // 父协程的工作，主runBlocking协程
        println("main runBlocking 1: ${Thread.currentThread().name}")
        delay(500)
        println("main runBlocking 2: ${Thread.currentThread().name}")
    }
}